package br.sc.senai.control.managedbeans;

import java.io.IOException;
import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import br.sc.senai.model.dao.Persist;
import br.sc.senai.model.entity.Marca;
import br.sc.senai.model.exception.DAOExcption;

/**
 * 
 * @author Dhyego
 * @14/06/2013
 * @locadora-de-carros
 * @ClienteMB.java
 * @param <Marca>
 */

@ManagedBean(name = "MarcaMB")
@SessionScoped
public class MarcaMB{

	
	private Persist<Marca> daoMarca = new Persist<Marca>();
	private Marca marca = new Marca();
	private Marca selectMarca;
	
	public Marca getSelectMarca() {
		return selectMarca;
	}



	public void setSelectMarca(Marca selectMarca) {
		this.selectMarca = selectMarca;
	}



	public void insert() {

	
		
		try {
			if (marca.getId() != null && marca.getId() > 0){
				daoMarca.update(marca);
			} else {
				daoMarca.add(marca);
			}
			marca = new Marca();
		} catch (DAOExcption e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	
	//Retorna um objeto pelo ID
	public Marca getById(int id){
		
		Marca mar = new Marca();
		mar.setId(id);
		
		try {
			mar = daoMarca.getById(mar);
		} catch (DAOExcption e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return mar;
		
	}
	
	//Retorna uma lista com todos Objetos
	public List<Marca> loadAll() {

		List<Marca> retorno = null;

		try {
			retorno = daoMarca.loadAll(Marca.class);
		} catch (DAOExcption e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return retorno;
	}
	
	
	//Deleta um objeto passando o objeto inteiro.
	public boolean delete(){
		
		boolean ok = false;
		
		try {
			if (selectMarca != null)
				daoMarca.delete(selectMarca);
			selectMarca = null;
		} catch (DAOExcption e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return ok;
	}

	public void redirect(Boolean pIsCadastrarNovo){
		marca = new Marca();
		if (!pIsCadastrarNovo){
			try {
				//daoCliente.loadBySql("From Locacao l order by dtCadastro", arg1)
				if (selectMarca != null)
					marca  = daoMarca.getById(selectMarca);
				else return;
						
			} catch (DAOExcption e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		try {
			FacesContext.getCurrentInstance().getExternalContext().redirect("cadastra-marca.xhtml");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	public Marca getMarca() {
		return marca;
	}

	public void setAutomovel(Marca marca) {
		this.marca = marca;
	}

}
